package tree.递归;

import po.TreeNode;

/**
 * @author songZiHao
 * @version 1.0.0
 * @ClassName N根据二叉树创建字符串606.java
 * @Description https://leetcode-cn.com/problems/construct-string-from-binary-tree/
 * @createTime 2021年06月21日 19:36:00
 */
public class N根据二叉树创建字符串606 {

    public String tree2str(TreeNode root) {
        if (root == null) {
            return "";
        }
        //1. 左右节点都是null，直接拼接""
        if (root.left == null && root.right == null) {
            return root.val+"";
        }
        if (root.right == null) {
            //只有左孩子，那我们在递归时，只需要在左孩子的结果外加上一层括号，而不需要给右孩子加上任何括号
            return root.val+"("+tree2str(root.left)+")";
        }
        //当前节点只有右孩子，那我们在递归时，需要先加上一层空的括号 () 表示左孩子为空，再对右孩子进行递归，并在结果外加上一层括号
        return  root.val+"("+tree2str(root.left)+")("+tree2str(root.right)+")";
    }
}
